/**
在 TypeScript 中，函数的参数默认值允许开发者为参数指定一个默认值，当函数调用时没有提供该参数时，将使用这个默认值。这使得函数更加灵活，增强了代码的可读性和可维护性。以下是关于参数默认值的说明总结：
  1. 默认参数的定义
  在函数参数中，可以通过赋值的方式来定义默认参数。语法如下：
  function 函数名(参数名: 参数类型 = 默认值): 返回值类型 {
      // 函数体
  }
  2. 示例

   2.1 基本示例

  定义一个函数，带有一个默认参数：
  function greet(name: string, greeting: string = "Hello"): string {
      return `${greeting}, ${name}!`;
  }

  console.log(greet("Alice"));          // 输出: Hello, Alice!
  console.log(greet("Bob", "Hi"));      // 输出: Hi, Bob!
  在上面的例子中， `greeting`  参数有一个默认值  `"Hello"` ，如果不提供该参数，则使用默认值。

  3. 默认参数与可选参数的结合

  默认参数可以与可选参数结合使用，但必须注意顺序：可选参数必须放在必需参数的后面。

   示例：
  function multiply(a: number, b: number = 1): number {
      return a * b;
  }

  console.log(multiply(5));     // 输出: 5
  console.log(multiply(5, 2));  // 输出: 10
  4. 计算默认值

  默认参数的值可以是任何有效的表达式，包括函数调用和复杂的计算。

   示例：
  function add(a: number, b: number = a): number {
      return a + b;
  }

  console.log(add(5));     // 输出: 10
  console.log(add(5, 3));  // 输出: 8
  在这个例子中， `b`  的默认值是  `a` ，因此当只传入一个参数时， `b`  将等于  `a`  的值。

  5. 注意事项

  - **参数顺序**：默认参数可以放在参数列表的任何位置，但如果与可选参数结合使用，必须确保可选参数在必需参数之后。
  - **不覆盖默认值**：在函数调用时，如果提供了参数，则会覆盖默认值。

  6. 结论

  参数默认值是 TypeScript 中一个非常有用的特性，它提高了函数的灵活性和可读性。合理使用默认参数可以使代码更加简洁，并减少函数调用时的繁琐性。在实际开发中，结合使用默认参数和可选参数，可以设计出更为灵活和易用的函数接口。
 */
// 函数的参数可以有默认值
// 1.有默认值的情况下, 参数的类型注解可以省略
// 2.有默认值的参数, 是可以接收一个undefined的值
function foo(x: number, y: number = 10) {
  console.log(x, y);
}

foo(10)
foo(10, undefined)
foo(10, 55)

export {}
